home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / carved-logo.scm < prev    next >
Text File  |  2009-12-15  |  6KB  |  179 lines

  1. ;  CARVE-TEXT
  2. ;   Carving, embossing, & stamping
  3. ;   Process taken from "The Photoshop 3 WOW! Book"
  4. ;   http://www.peachpit.com
  5.  
  6.  
  7. (define (carve-brush brush-size)
  8.   (cond ((<= brush-size 5) "Circle (05)")
  9.         ((<= brush-size 7) "Circle (07)")
  10.         ((<= brush-size 9) "Circle (09)")
  11.         ((<= brush-size 11) "Circle (11)")
  12.         ((<= brush-size 13) "Circle (13)")
  13.         ((<= brush-size 15) "Circle (15)")
  14.         ((<= brush-size 17) "Circle (17)")
  15.         ((> brush-size 17) "Circle (19)")))
  16.  
  17. (define (carve-scale val scale)
  18.   (* (sqrt val) scale))
  19.  
  20. (define (calculate-inset-gamma img layer)
  21.   (let* ((stats (gimp-histogram layer 0 0 255))
  22.          (mean (car stats)))
  23.     (cond ((< mean 127) (+ 1.0 (* 0.5 (/ (- 127 mean) 127.0))))
  24.           ((>= mean 127) (- 1.0 (* 0.5 (/ (- mean 127) 127.0)))))))
  25.  
  26. (define (script-fu-carved-logo text size font bg-img carve-raised padding)
  27.   (let* (
  28.         (img (car (gimp-file-load 1 bg-img bg-img)))
  29.         (offx (carve-scale size 0.33))
  30.         (offy (carve-scale size 0.25))
  31.         (feather (carve-scale size 0.3))
  32.         (brush-size (carve-scale size 0.3))
  33.         (b-size (+ (carve-scale size 0.5) padding))
  34.         (layer1 (car (gimp-image-get-active-drawable img)))
  35.         (mask-layer (car (gimp-text-fontname img -1 0 0 text b-size TRUE size PIXELS font)))
  36.         (width (car (gimp-drawable-width mask-layer)))
  37.         (height (car (gimp-drawable-height mask-layer)))
  38.         (mask-fs 0)
  39.         (mask (car (gimp-channel-new img width height "Engraving Mask" 50 '(0 0 0))))
  40.         (inset-gamma (calculate-inset-gamma img layer1))
  41.         (mask-fat 0)
  42.         (mask-emboss 0)
  43.         (mask-highlight 0)
  44.         (mask-shadow 0)
  45.         (shadow-layer 0)
  46.         (highlight-layer 0)
  47.         (cast-shadow-layer 0)
  48.         (csl-mask 0)
  49.         (inset-layer 0)
  50.         (il-mask 0)
  51.         )
  52.  
  53.     (gimp-context-push)
  54.  
  55.     (gimp-image-undo-disable img)
  56.  
  57.     (gimp-image-set-filename img "")
  58.  
  59.     (gimp-image-add-channel img mask 0)
  60.  
  61.     (gimp-layer-set-lock-alpha mask-layer TRUE)
  62.     (gimp-context-set-background '(255 255 255))
  63.     (gimp-edit-fill mask-layer BACKGROUND-FILL)
  64.     (gimp-context-set-background '(0 0 0))
  65.     (gimp-edit-fill mask BACKGROUND-FILL)
  66.  
  67.     (plug-in-tile RUN-NONINTERACTIVE img layer1 width height FALSE)
  68.  
  69.     (gimp-edit-copy mask-layer)
  70.     (set! mask-fs (car (gimp-edit-paste mask FALSE)))
  71.     (gimp-floating-sel-anchor mask-fs)
  72.     (if (= carve-raised TRUE)
  73.         (gimp-invert mask)
  74.     )
  75.  
  76.     (gimp-image-remove-layer img mask-layer)
  77.  
  78.     (set! mask-fat (car (gimp-channel-copy mask)))
  79.     (gimp-image-add-channel img mask-fat 0)
  80.     (gimp-selection-load mask-fat)
  81.     (gimp-context-set-brush (carve-brush brush-size))
  82.     (gimp-context-set-foreground '(255 255 255))
  83.     (gimp-edit-stroke mask-fat)
  84.     (gimp-selection-none img)
  85.  
  86.     (set! mask-emboss (car (gimp-channel-copy mask-fat)))
  87.     (gimp-image-add-channel img mask-emboss 0)
  88.     (plug-in-gauss-rle RUN-NONINTERACTIVE img mask-emboss feather TRUE TRUE)
  89.     (plug-in-emboss RUN-NONINTERACTIVE img mask-emboss 315.0 45.0 7 TRUE)
  90.  
  91.     (gimp-context-set-background '(180 180 180))
  92.     (gimp-selection-load mask-fat)
  93.     (gimp-selection-invert img)
  94.     (gimp-edit-fill mask-emboss BACKGROUND-FILL)
  95.     (gimp-selection-load mask)
  96.     (gimp-edit-fill mask-emboss BACKGROUND-FILL)
  97.     (gimp-selection-none img)
  98.  
  99.     (set! mask-highlight (car (gimp-channel-copy mask-emboss)))
  100.     (gimp-image-add-channel img mask-highlight 0)
  101.     (gimp-levels mask-highlight 0 180 255 1.0 0 255)
  102.  
  103.     (set! mask-shadow mask-emboss)
  104.     (gimp-levels mask-shadow 0 0 180 1.0 0 255)
  105.  
  106.     (gimp-edit-copy mask-shadow)
  107.     (set! shadow-layer (car (gimp-edit-paste layer1 FALSE)))
  108.     (gimp-floating-sel-to-layer shadow-layer)
  109.     (gimp-layer-set-mode shadow-layer MULTIPLY-MODE)
  110.  
  111.     (gimp-edit-copy mask-highlight)
  112.     (set! highlight-layer (car (gimp-edit-paste shadow-layer FALSE)))
  113.     (gimp-floating-sel-to-layer highlight-layer)
  114.     (gimp-layer-set-mode highlight-layer SCREEN-MODE)
  115.  
  116.     (gimp-edit-copy mask)
  117.     (set! cast-shadow-layer (car (gimp-edit-paste highlight-layer FALSE)))
  118.     (gimp-floating-sel-to-layer cast-shadow-layer)
  119.     (gimp-layer-set-mode cast-shadow-layer MULTIPLY-MODE)
  120.     (gimp-layer-set-opacity cast-shadow-layer 75)
  121.     (plug-in-gauss-rle RUN-NONINTERACTIVE img cast-shadow-layer feather TRUE TRUE)
  122.     (gimp-layer-translate cast-shadow-layer offx offy)
  123.  
  124.     (set! csl-mask (car (gimp-layer-create-mask cast-shadow-layer ADD-BLACK-MASK)))
  125.     (gimp-layer-add-mask cast-shadow-layer csl-mask)
  126.     (gimp-selection-load mask)
  127.     (gimp-context-set-background '(255 255 255))
  128.     (gimp-edit-fill csl-mask BACKGROUND-FILL)
  129.  
  130.     (set! inset-layer (car (gimp-layer-copy layer1 TRUE)))
  131.     (gimp-image-add-layer img inset-layer 1)
  132.  
  133.     (set! il-mask (car (gimp-layer-create-mask inset-layer ADD-BLACK-MASK)))
  134.     (gimp-layer-add-mask inset-layer il-mask)
  135.     (gimp-selection-load mask)
  136.     (gimp-context-set-background '(255 255 255))
  137.     (gimp-edit-fill il-mask BACKGROUND-FILL)
  138.     (gimp-selection-none img)
  139.  
  140.     (gimp-levels inset-layer 0 0 255 inset-gamma 0 255)
  141.  
  142.     (gimp-image-remove-channel img mask)
  143.     (gimp-image-remove-channel img mask-fat)
  144.     (gimp-image-remove-channel img mask-highlight)
  145.     (gimp-image-remove-channel img mask-shadow)
  146.  
  147.     (gimp-drawable-set-name layer1 "Carved Surface")
  148.     (gimp-drawable-set-name shadow-layer "Bevel Shadow")
  149.     (gimp-drawable-set-name highlight-layer "Bevel Highlight")
  150.     (gimp-drawable-set-name cast-shadow-layer "Cast Shadow")
  151.     (gimp-drawable-set-name inset-layer "Inset")
  152.  
  153.     (gimp-display-new img)
  154.     (gimp-image-undo-enable img)
  155.  
  156.     (gimp-context-pop)
  157.   )
  158. )
  159.  
  160. (script-fu-register "script-fu-carved-logo"
  161.   _"Carved..."
  162.   _"Create a logo with text raised above or carved in to the specified background image"
  163.   "Spencer Kimball"
  164.   "Spencer Kimball"
  165.   "1997"
  166.   ""
  167.   SF-STRING     _"Text" "Marble"
  168.   SF-ADJUSTMENT _"Font size (pixels)" '(100 2 1000 1 10 0 1)
  169.   SF-FONT       _"Font" "Engraver"
  170.   SF-FILENAME   _"Background Image"
  171.       (string-append gimp-data-directory
  172.                      "/scripts/images/texture3.jpg")
  173.   SF-TOGGLE     _"Carve raised text" FALSE
  174.   SF-ADJUSTMENT _"Padding around text" '(10 0 1000 1 10 0 1)
  175. )
  176.  
  177. (script-fu-menu-register "script-fu-carved-logo"
  178.                          "<Image>/File/Create/Logos")
  179.